Typically, to integrate storage provisioning functionality or features into a variety of software products, such as, e.g., software products related to system management and automation, the software products have to be adapted to directly access and communicate with storage devices or resources, some of which may have unique interfacing characteristics or configurations. Accordingly, each of those software products are required to be modified to include interface modules (e.g., using custom source code) corresponding to each unique interface configuration so that the software products can interface with the storage devices for storage allocation.
However, providing such interface modules in each individual software product (or associating the interface modules with each computing device running those software products) may be very time-consuming, and in general, inefficient. Moreover, it may also be difficult and impractical for an operator or administrator to add new interface module (with additional source code) in each software product every time a new storage product with a new interface configuration is provided as a potential storage resource. As such, generally, it may be very difficult, if not impossible, to address the issue of heterogeneity of interface configurations of different types of storage devices (as each unique interface configuration may have different implementation and operational requirements), and configure storage in a consistent and uniform manner. As a result, available storage resources may not be utilized in a cost-effective and efficient manner.
Thus, it is desirable to develop and provide an improved technique for supporting heterogeneous storage devices, e.g., having disparate interface configurations, using a common interface that may access, or otherwise operate, the heterogeneous storage devices, e.g., based on their respective interface configuration.